package payment

import (
	"fmt"
	"github.com/gofiber/fiber/v2"
	"sg-backend/global"
	"sg-backend/model/paylog"
	"time"
)

type _updateType struct {
	Id           uint       `json:"id"`
	PayTypeId    uint       `json:"payTypeId"`
	Money        float64    `json:"money"`
	FamilyTypeId uint       `json:"FamilyTypeId"`
	Remark       string     `json:"remark"`
	Time         *time.Time `json:"time"`
}

// UpdatePaymentLog 修改支出流水
func UpdatePaymentLog(ctx *fiber.Ctx) error {

	// 获取数据
	var dataDto _updateType
	if err := ctx.BodyParser(&dataDto); err != nil {
		return ctx.JSON(fiber.Map{
			"status":  "error",
			"message": fmt.Sprintf("数据解释出错！%s", err),
		})
	}

	// 保存到数据库
	updateObj := paylog.PayLog{Id: dataDto.Id}
	global.DB.First(&updateObj)
	updateObj.Money = dataDto.Money
	if dataDto.FamilyTypeId > 0 {

		// 有传入时修改
		updateObj.FamilyTypeId = dataDto.FamilyTypeId
	}
	updateObj.Time = dataDto.Time
	if dataDto.PayTypeId > 0 {

		// 有传入时修改
		updateObj.PayTypeId = dataDto.PayTypeId
	}
	updateObj.Remark = dataDto.Remark

	// 保存到数据库
	r := global.DB.Save(&updateObj)
	if r.Error != nil {
		return ctx.JSON(fiber.Map{
			"status":  "error",
			"message": fmt.Sprintf("更新失败！错误：%v", r.Error),
		})
	}

	return ctx.JSON(fiber.Map{
		"status":  "done",
		"message": "更新成功！",
	})
}
